package name.huliqing.qfaces.temp;
//package name.huliqing.qfaces.component;
//
//import java.io.IOException;
//import javax.faces.component.UIComponent;
//import javax.faces.context.FacesContext;
//import javax.faces.context.ResponseWriter;
//import name.huliqing.qfaces.QFaces;
//
//public class QFrame implements java.io.Serializable{
//
//	private UIComponent ui;	// QFrame所关联的组件
//	private String frameId;
//	private FrameHeader header;
//	private QPanel body;
//	private QPanel footer;
//
//	public String getFrameId() {
//		return frameId;
//	}
//
//	public void setFrameId(String frameId) {
//		this.frameId = frameId;
//	}
//
//	public FrameHeader getHeader() {
//		return header;
//	}
//
//	public void setHeader(FrameHeader header) {
//		this.header = header;
//	}
//
//	public QPanel getBody() {
//		return body;
//	}
//
//	public void setBody(QPanel body) {
//		this.body = body;
//	}
//
//	public QPanel getFooter() {
//		return footer;
//	}
//
//	public void setFooter(QPanel footer) {
//		this.footer = footer;
//	}
//	
//	public UIComponent getUi() {
//		return ui;
//	}
//	
//	public void setUi(UIComponent ui) {
//		this.ui = ui;
//	}
//	
//	public Boolean getRenderFrameBorder() {
//		return renderFrameBorder;
//	}
//	
//	public void setRenderFrameBorder(Boolean renderFrameBorder) {
//		this.renderFrameBorder = renderFrameBorder;
//	}
//	
//	public Boolean getRenderFrameHeader() {
//		return renderFrameHeader;
//	}
//	
//	public void setRenderFrameHeader(Boolean renderFrameHeader) {
//		this.renderFrameHeader = renderFrameHeader;
//	}
//	
//	public Boolean getRenderFrameBody() {
//		return renderFrameBody;
//	}
//	
//	public void setRenderFrameBody(Boolean renderFrameBody) {
//		this.renderFrameBody = renderFrameBody;
//	}
//	
//	public Boolean getRenderFrameFooter() {
//		return renderFrameFooter;
//	}
//	
//	public void setRenderFrameFooter(Boolean renderFrameFooter) {
//		this.renderFrameFooter = renderFrameFooter;
//	}
//	
//	public String getFrameTitle() {
//		return frameTitle;
//	}
//	
//	public void setFrameTitle(String frameTitle) {
//		this.frameTitle = frameTitle;
//	}
//	
//	public String getFrameFooter() {
//		return frameFooter;
//	}
//	
//	public void setFrameFooter(String frameFooter) {
//		this.frameFooter = frameFooter;
//	}
//	
//	public String getFrameHeaderStyle() {
//		return frameHeaderStyle;
//	}
//	
//	public void setFrameHeaderStyle(String frameHeaderStyle) {
//		this.frameHeaderStyle = frameHeaderStyle;
//	}
//	
//	public String getFrameHeaderStyleClass() {
//		return frameHeaderStyleClass;
//	}
//	
//	public void setFrameHeaderStyleClass(String frameHeaderStyleClass) {
//		this.frameHeaderStyleClass = frameHeaderStyleClass;
//	}
//	
//	public String getFrameBodyStyle() {
//		return frameBodyStyle;
//	}
//	
//	public void setFrameBodyStyle(String frameBodyStyle) {
//		this.frameBodyStyle = frameBodyStyle;
//	}
//	
//	public String getFrameBodyStyleClass() {
//		return frameBodyStyleClass;
//	}
//	
//	public void setFrameBodyStyleClass(String frameBodyStyleClass) {
//		this.frameBodyStyleClass = frameBodyStyleClass;
//	}
//	
//	public String getFrameFooterStyle() {
//		return frameFooterStyle;
//	}
//	
//	public void setFrameFooterStyle(String frameFooterStyle) {
//		this.frameFooterStyle = frameFooterStyle;
//	}
//	
//	public String getFrameFooterStyleClass() {
//		return frameFooterStyleClass;
//	}
//	
//	public void setFrameFooterStyleClass(String frameFooterStyleClass) {
//		this.frameFooterStyleClass = frameFooterStyleClass;
//	}
//	
//	public Boolean getFrameDragEnabled() {
//		return frameDragEnabled;
//	}
//	
//	/**
//	 * 如果设置为true, 则frame的position属性为：absolute
//	 * @param frameDragEnabled
//	 */
//	public void setFrameDragEnabled(Boolean frameDragEnabled) {
//		this.frameDragEnabled = frameDragEnabled;
//	}
//	
//	public String getCloseSrc() {
//		return closeSrc;
//	}
//	
//	public void setCloseSrc(String closeSrc) {
//		this.closeSrc = closeSrc;
//	}
//	
//	public Boolean getFrameVisible() {
//		return frameVisible;
//	}
//
//	/**
//	 * 设置Frame的初始状态是否为可见的
//	 * @param frameVisible
//	 */
//	public void setFrameVisible(Boolean frameVisible) {
//		this.frameVisible = frameVisible;
//	}
//	
//	public String getFace() {
//		return face;
//	}
//	
//	/**
//	 * 设置Frame的样式
//	 * @param face
//	 */
//	public void setFace(String face) {
//		this.face = face;
//	}
//	
//	// ======================================================
//
//	// 是否渲染Frame边框
//	private Boolean renderFrameBorder;
//	
//	// 是否渲染header
//	private Boolean renderFrameHeader;
//	
//	// 是否渲染body
//	private Boolean renderFrameBody;
//	
//	// 是否渲染footer
//	private Boolean renderFrameFooter;
//	
//	// 是否允许拖动
//	private Boolean frameDragEnabled;
//	
//	// 是否可见的
//	private Boolean frameVisible;
//	
//	// 设置Frame的样式
//	private String face;
//	
//	private String frameTitle;	// Frame的标题
//	private String frameFooter;	// 
//	private String frameHeaderStyle;
//	private String frameHeaderStyleClass;
//	private String frameBodyStyle;
//	private String frameBodyStyleClass;
//	private String frameFooterStyle;
//	private String frameFooterStyleClass;
//	private String closeSrc = "name/huliqing/qfaces/images/frame-1-close.png";
//	
//	/**
//	 * @param frameId
//	 * 		Frame的ID
//	 * @param ui
//	 * 		父组件
//	 */
//	public QFrame(String frameId, UIComponent ui) {
//		if (ui == null)
//			throw new NullPointerException("Ref UIComponent not found!");
//		this.frameId = frameId;
//		this.ui = ui;
//		initAttributes();
//	}
//	
//	private void initAttributes() {
//		renderFrameBorder = QFaces.convertToBoolean(QFaces.getAttribute(ui, "renderFrameBorder", true));
//		renderFrameHeader = QFaces.convertToBoolean(QFaces.getAttribute(ui, "renderFrameHeader", true));
//		renderFrameBody = QFaces.convertToBoolean(QFaces.getAttribute(ui, "renderFrameBody", true));
//		renderFrameFooter = QFaces.convertToBoolean(QFaces.getAttribute(ui, "renderFrameFooter", true));
//		frameDragEnabled = QFaces.convertToBoolean(QFaces.getAttribute(ui, "frameDragEnabled", true));
//		frameVisible = QFaces.convertToBoolean(QFaces.getAttribute(ui, "frameVisible", true));
//		face = (String) QFaces.getAttribute(ui, "face", "1");
//		
//		frameTitle = (String) QFaces.getAttribute(ui, "frameTitle", ui.getClass().getSimpleName());
//		frameFooter = (String) QFaces.getAttribute(ui, "frameFooter", "QFaces UI");
//		frameHeaderStyle = (String) QFaces.getAttribute(ui, "frameHeaderStyle", "");
//		frameHeaderStyleClass = (String) QFaces.getAttribute(ui, "frameHeaderStyleClass", "qfaces_frameHeader");
//		frameBodyStyle = (String) QFaces.getAttribute(ui, "frameBodyStyle", "");
//		frameBodyStyleClass = (String) QFaces.getAttribute(ui, "frameBodyStyleClass", "qfaces_frameBody");
//		frameFooterStyle = (String) QFaces.getAttribute(ui, "frameFooterStyle", "");
//		frameFooterStyleClass = (String) QFaces.getAttribute(ui, "frameFooterStyleClass", "qfaces_frameFooter");
//		if (frameDragEnabled) frameHeaderStyle += ";cursor:move";
//		
//		this.setHeader(new FrameHeader(this));
//		this.setFooter(new FrameFooter(this));
//	}
//
//	public void render(FacesContext fc) throws IOException {
//		// 载入必要的资源
//		QFaces.getResLoader2().addJavaScript(null);
//		if (renderFrameBorder) {
//			encodeWidthFrameBorder(fc);
//		} else {
//			encodeWidthNoFrameBorder(fc);
//		}
//	}
//	
//	private void encodeWidthFrameBorder(FacesContext fc) throws IOException {
//		String FRAME_00 = "name/huliqing/qfaces/images/frame-" + face + "-00.png";
//	    String FRAME_01 = "name/huliqing/qfaces/images/frame-" + face + "-01.png";
//	    String FRAME_02 = "name/huliqing/qfaces/images/frame-" + face + "-02.png";
//	    String FRAME_10 = "name/huliqing/qfaces/images/frame-" + face + "-10.png";
//	    String FRAME_11 = "name/huliqing/qfaces/images/frame-" + face + "-11.png";
//	    String FRAME_12 = "name/huliqing/qfaces/images/frame-" + face + "-12.png";
//	    String FRAME_20 = "name/huliqing/qfaces/images/frame-" + face + "-20.png";
//	    String FRAME_21 = "name/huliqing/qfaces/images/frame-" + face + "-21.png";
//	    String FRAME_22 = "name/huliqing/qfaces/images/frame-" + face + "-22.png";
//
//		// 在某些瀏覽器下可能會在邊框的間隔部分出現空白，以下style解決這個問題
//		String styleFixSpaceBug = "margin:0;padding:0;font-size:0;border:0;";
//		
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("table", ui);
//		rw.writeAttribute("id", this.frameId, null);
//		if (!this.frameVisible) rw.writeAttribute("style", "display:none;", null);
//		rw.writeAttribute("border", "0", null);
//		rw.writeAttribute("cellspacing", "0", null);
//		rw.writeAttribute("cellpadding", "0", null);
//		rw.startElement("tr", ui);
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader2().loadImage(FRAME_00);
//			rw.endElement("td");
//			
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", "background:url(" + QFaces.getResLoader2().makeImageSrc(FRAME_01) + ") repeat-x", null);
//			if (renderFrameHeader && header != null) {
//				rw.startElement("div", ui);
//				rw.writeAttribute("class", frameHeaderStyleClass, null);
//				rw.writeAttribute("style", frameHeaderStyle, null);
//				header.render(fc);
//				rw.endElement("div");
//			}
//			rw.endElement("td");
//			
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader2().loadImage(FRAME_02);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.startElement("tr", ui);
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + QFaces.getResLoader2().makeImageSrc(FRAME_10) + ") repeat-y", null);
//			rw.endElement("td");
//			
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", "background-image:url(" + QFaces.getResLoader2().makeImageSrc(FRAME_11) + ")", null);
//			if (renderFrameBody && body != null) {
//				rw.startElement("div", ui);
//				rw.writeAttribute("class", frameBodyStyleClass, null);
//				rw.writeAttribute("style", frameBodyStyle, null);
//				body.render(fc);
//				rw.endElement("div");
//			}
//			if (renderFrameFooter && footer != null) {
//				rw.startElement("div", ui);
//				rw.writeAttribute("class", frameFooterStyleClass, null);
//				rw.writeAttribute("style", frameFooterStyle, null);
//				footer.render(fc);
//				rw.endElement("div");
//			}
//			rw.endElement("td");
//			
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + QFaces.getResLoader2().makeImageSrc(FRAME_12) + ") repeat-y", null);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.startElement("tr", ui);
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader2().loadImage(FRAME_20);
//			rw.endElement("td");
//			
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug + "background:url(" + QFaces.getResLoader2().makeImageSrc(FRAME_21) + ") repeat-x", null);
//			rw.endElement("td");
//			
//			rw.startElement("td", ui);
//			rw.writeAttribute("style", styleFixSpaceBug, null);
//			QFaces.getResLoader2().loadImage(FRAME_22);
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.endElement("table");
//	}
//	
//	private void encodeWidthNoFrameBorder(FacesContext fc) throws IOException {
//		ResponseWriter rw = fc.getResponseWriter();
//		rw.startElement("table", ui);
//		rw.writeAttribute("id", this.frameId, null);
//		if (!this.frameVisible) rw.writeAttribute("style", "display:none;", null);
//		rw.writeAttribute("border", "0", null);
//		rw.writeAttribute("cellspacing", "0", null);
//		rw.writeAttribute("cellpadding", "0", null);
//		rw.startElement("tr", ui);
//			rw.startElement("td", ui);
//			if (renderFrameHeader && header != null) {
//				rw.startElement("div", ui);
//				rw.writeAttribute("class", frameHeaderStyleClass, null);
//				rw.writeAttribute("style", frameHeaderStyle, null);
//				header.render(fc);
//				rw.endElement("div");
//			}
//			if (renderFrameBody && body != null) {
//				rw.startElement("div", ui);
//				rw.writeAttribute("class", frameBodyStyleClass, null);
//				rw.writeAttribute("style", frameBodyStyle, null);
//				body.render(fc);
//				rw.endElement("div");
//			}
//			if (renderFrameFooter && footer != null) {
//				rw.startElement("div", ui);
//				rw.writeAttribute("class", frameFooterStyleClass, null);
//				rw.writeAttribute("style", frameFooterStyle, null);
//				footer.render(fc);
//				rw.endElement("div");
//			}
//			rw.endElement("td");
//		rw.endElement("tr");
//		rw.endElement("table");
//	}
//	
//	public interface QPanel {
//		public void render(FacesContext fc) throws IOException;
//	}
//	
//	public class FrameHeader implements QPanel {
//		private QFrame frame;
//		private String clientId;
//		
//		public FrameHeader(QFrame frame) {
//			this.frame = frame;
//			this.clientId = this.frame.getFrameId() + ":header";
//		}
//		
//		public String getClientId() {
//			return this.clientId;
//		}
//		
//		public void render(FacesContext fc) throws IOException {
//			// 关闭Frame的JS响应
//			String jsCloseAction = "QFaces.Utils.close(\"" + this.frame.getFrameId() + "\")";
//			ResponseWriter rw = fc.getResponseWriter();
//			rw.startElement("table", this.frame.getUi());
//			rw.writeAttribute("id", clientId, null);
//			rw.writeAttribute("border", "0", null);
//			rw.writeAttribute("cellspacing", "3", null);
//			rw.writeAttribute("cellpadding", "3", null);
//			rw.writeAttribute("class", this.frame.getFrameHeaderStyleClass(), null);
//			rw.writeAttribute("style", this.frame.getFrameHeaderStyle(), null);
//				rw.startElement("tr", this.frame.getUi());
//					rw.startElement("td", this.frame.getUi());
//					rw.writeText(this.frame.getFrameTitle(), null);
//					rw.endElement("td");
//					
//					rw.startElement("td", this.frame.getUi());
//					rw.writeAttribute("width", "50", null);
//					rw.startElement("img", this.frame.getUi());
//					rw.writeAttribute("src", QFaces.getResLoader2().makeImageSrc(this.frame.getCloseSrc()), null);
//					rw.writeAttribute("onclick", jsCloseAction, null);
//					rw.writeAttribute("style", "border:0;float:right;cursor:pointer;vertical-align:middle;", null);
//					rw.writeAttribute("title", "Close", null);
//					rw.endElement("img");
//					rw.endElement("td");
//				rw.endElement("tr");
//			rw.endElement("table");
//			// 允许拖动
//			if (this.frame != null && this.frame.getFrameDragEnabled()) {
//				String jsDrag = "QFaces.Utils.toEnableDrag(\"" + this.clientId + "\", \"" + this.frame.getFrameId() + "\")";
//				QFaces.getResLoader2().addJSInit(jsDrag);
//			}
//		}
//	}
//	
//	public class FrameFooter implements QPanel {
//
//		private QFrame frame;
//		private String clientId;
//		
//		public FrameFooter(QFrame frame) {
//			this.frame = frame;
//			this.clientId = frame.getFrameId() + ":footer";
//		}
//		
//		public String getClientId() {
//			return this.clientId;
//		}
//
//		public void render(FacesContext fc) throws IOException {
//			ResponseWriter rw = fc.getResponseWriter();
//			rw.startElement("div", frame.getUi());
//			rw.writeAttribute("id", this.clientId, null);
//			rw.writeAttribute("class", this.frame.getFrameFooterStyleClass(), null);
//			rw.writeAttribute("style", this.frame.getFrameFooterStyle(), null);
//			rw.writeText(this.frame.getFrameFooter(), null);
//			rw.endElement("div");
//		}
//		
//	}
//}
